<?php
namespace zake\helper;

use zake\foundation\able\BeeAble;

/**
 * Class Session
 * @package zake\helper
 *
 * session id 构成结构
 *
 * | connect id | process id | cluster id |
 * |   16bit    |    8bit    |    8bit    |
 * |    √       |    √       |     √      |    connect
 * |    ×       |    √       |     √      |    channel
 * |    ×       |    ×       |     √      |    集群
 *
 *
 * session 组件
 */
class Session
{
    /**
     * session id
     * 32位正整数
     *
     * @author liu.bin 2020-04-01 13:57
     */
    public static function id($clusterId,$processId,$connectId)
    {
        // 数据溢出
        if($connectId > 0xFFFF || $clusterId > 0xFF || $processId > 0xFF){
            return 0;
        }
        $clusterId = $clusterId << 24;
        $processId = $processId << 16;
        return $clusterId + $processId + $connectId;
    }


    /**
     * 通过session，找到
     * @param $sessionId
     *
     * @author liu.bin 2020-04-30 22:37
     */
    public static function endPoint($sessionId)
    {

        // 1: 是否处于同一集群
        // 2: 是否处于同一进程
        // 3: 从reactor返回接收stream


    }


}